; rejestr B - sluzy do przechowywania zmiennej do czekania
; rejestr C - sluzy do przechowywania  wartosci licznika
; io jest mapowane na cala przestrzen adresowa 	
; poziom 0 - przycisk wcisniety, poziom 1 niewcisniety 
	org	0x1800
main:
	jr poczatek		;skaczemy do poczatku programu
	ds 0x1838-$,0		;zostawiamy puste miejsce, aby procedura obslugi przerwania zaczynala sie pod adresem 0x38 (zgodnie z trybem 1) 
przerwanie:	
	push AF			;zostawiamy na stosie znaczniki
	ld C,0xF0		;zaladowujemy licznik wartoscia 1111
	out (C),C		;zapisujemy wartosc rejstru C (wartosci z licznika) na diody LED
	pop AF			;bierzemy ze stosu zaczniki
	ei			;odblokowujemy przerwania
	reti			;powracamy z przerwania
poczatek:
	im 1			;ustawiamy tryb przerwani na tryb 1
	ei			;odblokowujemy przerwania
	ld A,0			;ladujemy zero ktore posluzy nam do wygaszenia diod LED
	out (0),A		;gasimy wszystkie diody LED
poprawnyWcisk:
nierob1:
	ld B,0xFF		;wypelniamy rejestr B czyli zmienna uzywana do czekania wartoscia 255
liczWcisk:
	in A, (0)		;zapisujemy stan przycisku do akumulatora
	bit 2, A		;testujemy stan przycisku 2
	jr NZ,nierob1		;skaczemy pod warunkiem ze przycisk niewcisniety (bit 2 ma wartosc niezerowa)
	DJNZ liczWcisk		;zmniejszamy wartosc z rejestru B i sprawdzamy czy jest niezerowa - wtedy skaczemy
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	ld A, C			;zapisujemy licznik C do akumulatora
	add A, 0x10		;dodajemy 0x10 (+1 na wyzszej polowce 8bitowego slowa bo licznik 4bitowy)
	ld C, A			;zapisujemy akumulator do licznika C
	out (0),A		;zapisujemy wartosc rejstru C na doidy LED
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
nierob2:
	ld B,0xFF		;wypelniamy rejestr B czyli zmienna uzywana do czekania wartoscia 255
liczOdcisk:
	in A, (0)		;zapisujemy stanu przycisku do akumulatora
	bit 2, A		;testujemy stan przycisku 2
	jr Z,nierob2		;skaczemy pod warunkiem ze przycisk wcisniety (bit 2 ma wartosc zero)
	DJNZ liczOdcisk		;zmniejszamy wartosc z rejestru B i sprawdzamy czy jest niezerowa - wtedy skaczemy

	jr poprawnyWcisk	;skok do poczatku programu
